package nancal.mp.db.mongo.table

import java.io.*
import nbcp.base.db.*
import nbcp.base.comm.*
import nbcp.base.extend.*
import nbcp.base.enums.*
import nbcp.base.utils.*
import nbcp.myoql.db.*
import nbcp.myoql.db.comm.*
import nbcp.myoql.db.enums.*
import nbcp.myoql.db.mongo.*
import nbcp.myoql.db.mongo.base.*
import nbcp.myoql.db.mongo.component.*
import org.slf4j.LoggerFactory
import org.springframework.stereotype.*


/**
 * Api定义
 */
@nbcp.base.db.annotation.Cn(value = """Api定义""")
@org.springframework.data.mongodb.core.mapping.Document()
@nbcp.base.db.annotation.DbEntityGroup(value = """dev""")
class ApiDefineMeta(private val parentPropertyName: String): MongoColumnName() {
    constructor(value: MongoColumnName) : this(value.toString()) {}
    val id = mongoColumnJoin(this.parentPropertyName, "_id")
    /**
     * 名称
     */
    @nbcp.base.db.annotation.Cn(value = """名称""")
    val name = mongoColumnJoin(this.parentPropertyName, "name")
    /**
     * 产品线
     */
    @nbcp.base.db.annotation.Cn(value = """产品线""")
    val productLine = CodeNameMeta(mongoColumnJoin(this.parentPropertyName, "productLine"))
    /**
     * 创建时间
     */
    @nbcp.base.db.annotation.Cn(value = """创建时间""")
    val createAt = mongoColumnJoin(this.parentPropertyName, "createAt")
    /**
     * 更新时间
     */
    @nbcp.base.db.annotation.Cn(value = """更新时间""")
    val updateAt = mongoColumnJoin(this.parentPropertyName, "updateAt")
    /**
     * 应用
     */
    @nbcp.base.db.annotation.Cn(value = """应用""")
    val app = mongoColumnJoin(this.parentPropertyName, "app")
    /**
     * 模块
     */
    @nbcp.base.db.annotation.Cn(value = """模块""")
    val group = mongoColumnJoin(this.parentPropertyName, "group")
    /**
     * 地址
     */
    @nbcp.base.db.annotation.Cn(value = """地址""")
    val url = mongoColumnJoin(this.parentPropertyName, "url")
    /**
     * HTTP方法
     */
    @nbcp.base.db.annotation.Cn(value = """HTTP方法""")
    val httpMethod = mongoColumnJoin(this.parentPropertyName, "httpMethod")
    /**
     * 请求头中的参数
     */
    @nbcp.base.db.annotation.Cn(value = """请求头中的参数""")
    val requestHeaderParameters = ApiSimpleParameterDefineMeta(mongoColumnJoin(this.parentPropertyName, "requestHeaderParameters"))
    /**
     * 请求体参数
     */
    @nbcp.base.db.annotation.Cn(value = """请求体参数""")
    val requestBodyParameters = ApiBodyParameterDefineMeta(mongoColumnJoin(this.parentPropertyName, "requestBodyParameters"))
    /**
     * 请求地址中path中的参数
     */
    @nbcp.base.db.annotation.Cn(value = """请求地址中path中的参数""")
    val requestUrlPathParameters = ApiSimpleParameterDefineMeta(mongoColumnJoin(this.parentPropertyName, "requestUrlPathParameters"))
    /**
     * 请求地址中的查询参数
     */
    @nbcp.base.db.annotation.Cn(value = """请求地址中的查询参数""")
    val requestUrlQueryParameters = ApiSimpleParameterDefineMeta(mongoColumnJoin(this.parentPropertyName, "requestUrlQueryParameters"))
    /**
     * 响应体参数
     */
    @nbcp.base.db.annotation.Cn(value = """响应体参数""")
    val responseBodyParameters = ApiBodyParameterDefineMeta(mongoColumnJoin(this.parentPropertyName, "responseBodyParameters"))
    /**
     * 响应头中的参数
     */
    @nbcp.base.db.annotation.Cn(value = """响应头中的参数""")
    val responseHeaderParameters = ApiSimpleParameterDefineMeta(mongoColumnJoin(this.parentPropertyName, "responseHeaderParameters"))
    /**
     * 备注
     */
    @nbcp.base.db.annotation.Cn(value = """备注""")
    val remark = mongoColumnJoin(this.parentPropertyName, "remark")
    override fun toString(): String {
        return mongoColumnJoin(this.parentPropertyName).toString()
    }
}

